package com.itany.corejava.code16_反射.zuoye;

/**
 * @author MissChen
 * @date 2024年03月26日 16:53
 */

import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;

/**
 * 定义一个Dept类，有id、name属性
 * 定义一个Emp类，有id、name、salary、dept属性(考虑是一个Dept实例)
 * 有一个静态方法getData方法
 * 在getData方法中初始化
 * 比如可以创建几个部门
 * 添加10条员工信息数据进入一个List中去并返回，这10个员工部门可以不同
 * 1.找出所有员工，并且按工资升序排列，打出员工姓名与工资
 * 2.找出所有员工，按照工资降序排序，打印出员工姓名、工资、部门
 * 3.找出员工都属于哪些部门
 * 4.输出最高工资的员工信息
 * 5.输出最低工资的员工信息
 * 6.在每一个员工名字前面加上前缀hello并输出
 *
 */
public class Test01 {
    public static void main(String[] args) {
        List<Emp> emps=Emp.getData();
        // 1.找出所有员工，并且按工资升序排列，打出员工姓名与工资
        // emps.stream()
        //         .sorted((o1,o2)->(int)(o1.getSalary()-o2.getSalary()))
        //         .forEach(emp->System.out.println("员工姓名:"+emp.getName()+",员工工资:"+emp.getSalary()));


        // 2.找出所有员工，按照工资降序排序，打印出员工姓名、工资、部门
        // emps.stream()
        //         .sorted((o1,o2)->(int)(o2.getSalary()-o1.getSalary()))
        //         .forEach(emp->System.out.println("员工姓名:"+emp.getName()+",员工工资:"+emp.getSalary()+",部门名称:"+emp.getDept().getName()));


          // 3.找出员工都属于哪些部门
        // emps.stream()
        //         .map(emp -> emp.getDept().getName())
        //         .distinct()
        //         .forEach(System.out::println);


        // 4.输出最高工资的员工信息
       // Emp e= emps.stream()
       //          .max((e1,e2)-> (int) (e1.getSalary()-e2.getSalary()))
       //          .get();
       //
       //  System.out.println(e);


        // 输出最高工资
       // Double money= emps.stream()
       //          .map(e->e.getSalary())
       //          .max((a,b)->(int)(a-b))
       //          .get();
       //  System.out.println(money);


        // 在每一个员工名字前面加上前缀hello并输出
        // emps.stream().forEach(emp -> System.out.println("hello"+emp.getName()));
        emps.stream()
                .map(e->"hello"+e.getName())
                .forEach(System.out::println);
    }
}
